﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MLSharp.See5
{
	/// <summary>
	/// Contains a misclassification cost for See5.
	/// </summary>
	public class MisclassificationCost
	{
		#region Private Fields 

		/// <summary>
		/// The predicted class.
		/// </summary>
		private string mPredictedClass;

		/// <summary>
		/// The actual class.
		/// </summary>
		private string mActualClass;

		/// <summary>
		/// The cost for this type of misclassification.
		/// </summary>
		private int mCost;

		#endregion

		#region Public Properties

		/// <summary>
		/// The predicted class.
		/// </summary>
		public string PredictedClass
		{
			get
			{
				return mPredictedClass;
			}
			set
			{
				mPredictedClass = value;
			}
		}

		/// <summary>
		/// The actual class.
		/// </summary>
		public string ActualClass
		{
			get
			{
				return mActualClass;
			}
			set
			{
				mActualClass = value;
			}
		}

		/// <summary>
		/// The cost for this type of misclassification.
		/// </summary>
		public int Cost
		{
			get
			{
				return mCost;
			}
			set
			{
				mCost = value;
			}
		}

		#endregion

		#region Public Constructors

		/// <summary>
		/// Creates a new instance with the specified properties.
		/// </summary>
		/// <param name="predictedClass">The predicted class.</param>
		/// <param name="actualClass">The actual class.</param>
		/// <param name="cost">The cost for this type of misclassification.</param>
		public MisclassificationCost(string predictedClass, string actualClass, int cost)
		{
			mPredictedClass = predictedClass;
			mActualClass = actualClass;
			mCost = cost;
		}

		#endregion
	}
}
